package com.joven.shelltest.task;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author wzj
 * @since 2024/10/28 11:07
 */
@Component
@ConditionalOnProperty(value = "task.runOnce", havingValue = "true")
public class ScheduledOnceTask {

    /**
     * 每隔一分钟执行一次（但实际上由于条件注解的控制，只会执行一次）
     */
    @Scheduled(fixedRate = 60000)
    public void myTask() {
        System.out.println("定时任务执行了!");

        // 修改配置文件中的属性值或设置内存中的标志位来记录任务已经执行过的状态
        // 这里以打印日志代替实际修改操作
        System.out.println("已将task.runOnce设置为false（模拟操作）");

        // 注意：在实际应用中，需要确保这个修改操作是持久的且线程安全的
        // 例如，可以将修改操作放在一个同步块中，或者使用数据库来记录状态
    }

}

